var table={
	//配制属性
	options:function(params){
		this.props={
			type:params.type || 'get',
			dataType: params.dataType || 'json',
			cols:params.cols || [],
			url:params.url || '',
			elem:params.elem || '',
		}
	},
	getData:function(){
		let that =this;
		//闭包
		return new Promise(function(resolve, reject){
			 //获取数据(异步的)，使用Promise模型，解决异步的数据不同步的问题 
			 $.ajax({
				type:that.props.type,
				url:that.props.url,
				dataType:that.props.dataType, 
				success:function(resp){
					if(resp.code===0){
						// 承诺
						 resolve(resp.data);					
					}else{
						//拒绝了
						reject(resp.message);
					}
				}			
			 }); 
		}) 
	},
	template:function(item){
		let strbuffer=[];
		strbuffer.push('<tr>');
		//循环配置的列属性
		for(let col of this.props.cols){
			strbuffer.push('<td>');
			
			if(col.hasOwnProperty('template')){
				// java反射
				let resultStr=col['template'].call(this,item);
				 
				strbuffer.push(resultStr);
			}else{ 
				strbuffer.push(item[col.name]  || '');
			} 
			
			strbuffer.push('</td>');
		}
		
		strbuffer.push('</tr>');
		 
		return strbuffer.join('');
	},
	init_header:function(){
		let strbuffer=[];
		strbuffer.push('<tr>');
		for(let item of this.props.cols){
			strbuffer.push('<td>');
			strbuffer.push(item.title);			
			strbuffer.push('</td>');
		}
		strbuffer.push('</tr>');
		//查询表格
		let tb=$(this.props.elem);
		tb.empty();
		tb.append(strbuffer.join(""));
	},
	createTale:function(){
		//创建表格
		//初始化列头
		this.init_header();
		
		//promise编程模型
		promise=this.getData();
		
		let tbDom=$(this.props.elem);
		//异步成功了
		promise.then(function(list){
			for(let item of list){
				let tag= table.template(item);
				tbDom.append(tag);
			}
		})
		
		//异步 失败了
		promise.catch(function(message){
			alert(message);
		});
		 
		 
	} 
}


 